home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / sharew / dtp / imagelab / doku / 3_theory.doc < prev    next >
Encoding:
Text File  |  1993-04-28  |  24.0 KB  |  528 lines

  1.  
  2.               ---------------------------------------------
  3.               Die ImageLab-Algorithmen und -Datenstrukturen
  4.               ---------------------------------------------
  5.                    Stand: ImageLab 2.1 - April 1993
  6.  
  7.  
  8.  
  9. Einführende Bemerkungen
  10. =======================
  11.  
  12. Vielen Dank für Ihre Bereitschaft, hinter die Kulissen schauen zu wollen.
  13. Zwar funktioniert Imagelab auch dann, wenn Sie nicht genau wissen, warum
  14. es funktioniert, aber es ist schöner, wenn man weiß, warum etwas so
  15. geschieht, wie es geschieht. Schauen wir zunächst erst einmal, was uns
  16. alles bevorsteht:
  17.  
  18.  - Eine Beschreibung der Bilddatenformate, die ImageLab verarbeiten kann.
  19.  
  20.  - Eine Beschreibung des Floyd-Steinberg-Algorithmus, mit dem es möglich
  21.    ist, Graustufen zu simulieren, ohne an Auflösung zu verlieren.
  22.  
  23.  - Eine Beschreibung des Algorithmus, mit dessen Hilfe der Kontrast
  24.    eines Bildes verändert wird.
  25.  
  26.  - Eine Beschreibung des Algorithmus zur Kantenverstärkung: es handelt
  27.    sich um den LaPlace-Operator.
  28.  
  29.  - Eine Beschreibung der Histogramm-Erzeugung, also der Berechnung der
  30.    relativen bzw. absoluten Häufigkeit der Graustufen.
  31.  
  32.  - Eine Beschreibung des Algorithmus zur linearen Spreizung der Grauwerte
  33.    eines Bildes.
  34.  
  35.  - Eine Beschreibung der Transferfunktions-Anwendung.
  36.  
  37.  - Eine Beschreibung der drei unter dem Begriff "Grauwert-Morphologie"
  38.    zusammengefaßten Funktionen.
  39.  
  40.  - Eine Beschreibung der Bitebenen-Darstellung.
  41.  
  42.  - Eine Beschreibung des Algorithmus zur Histogramm-Ebnung.
  43.  
  44. Ziel dieser Veranstaltung ist es, Sie soweit mit den theoretischen Grundlagen
  45. der oben angeführten Techniken vertraut zu machen, daß Sie problemlos mit
  46. der Sprache der weiterführenden Fachliteratur zurecht kommen, falls die
  47. folgenden Ausführungen Ihren Wissensdurst noch nicht stillen konnten.
  48.  
  49. Nun denn - beißen Sie sich durch; es lohnt sich.
  50.  
  51.  
  52.  
  53. Die Bilddatenformate
  54. ====================
  55.  
  56. Ursprünglich war vorgesehen, daß ImageLab nur ein Format verarbeiten kann,
  57. nämlich das B&W256-Format, doch dann stellte sich heraus, daß das
  58. Videodigitizer-Format der Firma Print Technik bis auf den Header identisch
  59. mit dem B&W256-Format ist, und so wurde das Print-Technik-Format ebenfalls
  60. unterstützt. Aus Gründen der Austauschbarkeit mit anderen Rechnertypen
  61. wurde ab Version 1.1 auch das IFF-Format aufgenommen. Da dieses Format
  62. im Vergleich zu den beiden erstgenannten recht komplex ist, wird an dieser
  63. Stelle auf eine Beschreibung verzichtet. Eine IFF-Formatbeschreibung finden
  64. Sie beispielsweise im "Atari ST Profibuch" von Jankowski/Reschke/Rabich.
  65.  
  66. Betrachten wir nun das B&W256- und das Print-Technik-Format:
  67.  
  68. Beide Formate haben am Anfang der Datei einen 10 Bytes langen Header, der
  69. beim B&W256-Format wie folgt aufgebaut ist:
  70.  
  71. Magic-Number (6 Bytes): "B&W256" (daher der Name des Formats),
  72. oder in hex: $422657323536.
  73.  
  74. Anzahl der Pixel pro Scanzeile (2 Bytes).
  75.  
  76. Anzahl der Scanzeilen (2 Bytes).
  77.  
  78. Ein Beispiel (hex.): 42 26 57 32 35 36 02 80 01 90. Dieser 10-Bytes-Header
  79. sagt aus, daß es sich um eine B&W256-Datei mit 400 Zeilen von jeweils 640
  80. Pixel Breite handelt.
  81.  
  82.  
  83. Und nun zum Videodigitizer-Format:
  84.  
  85. Magic-Number 1 (4 Bytes) in hex: $0F0F0001.
  86. Anzahl der Pixel pro Scanzeile (2 Bytes).
  87. Anzahl der Scanzeilen (2 Bytes).
  88. Magic-Number 2 (2 Bytes) in hex $0001
  89.  
  90. Auch hierzu ein Beispiel (hex.): 0F 0F 00 01 02 80 01 90 00 01. Auch dieser
  91. Header sagt aus, daß das Bild 640 * 400 Pixel groß ist.
  92.  
  93. Nach dem Header folgt für jedes Pixel - Zeile für Zeile - ein Datenbyte;
  94. im oben genannten Beispielfalle also 640 * 400 = 256000 Bytes. Die
  95. Datei hat damit eine Länge von 256010 Bytes. Da jedes Pixel durch ein Byte
  96. repräsentiert wird, können damit Graustufen im Wertebereich von 0 ... 255
  97. gespeichert (und geladen) werden.
  98.  
  99.  
  100.  
  101. Der Floyd-Steinberg-Algorithmus
  102. ===============================
  103.  
  104. Dieser Algorithmus wurde im Jahre 1975 von R.W. Floyd und L. Steinberg
  105. vorgestellt. Er handhabt in sehr eleganter Weise das Problem, Graustufen
  106. auf einem Ausgabegerät simulieren zu müssen, das keine echten Graustufen
  107. darstellen kann (wie z.B. der Atari ST im Monochrommodus oder ein
  108. Matrix-Drucker usw.).
  109.  
  110. Wie funktioniert's ? Wir wissen bereits, daß unser Atari im Monochrommodus
  111. für jedes Pixel nur zwei Helligkeiten kennt - "schwarz" oder "weiß"
  112. oder anders ausgedrückt: "Pixel ein" oder "Pixel aus". Die einfachste
  113. Methode, ein Graustufenbild darzustellen, wäre nun, einen Schwellenwert zu
  114. definieren, ab dem ein Pixel eingeschaltet wird, z.B. beim Helligkeitswert
  115. 128. Alles, was eine geringere Helligkeit aufweist, wird als schwarz
  116. angesehen und alles, was mindestens diesen Schwellenwert erreicht hat, als
  117. weiß. Es versteht sich von selbst, daß diese Darstellungsweise nicht sehr
  118. befriedigend ist. Ein Graukeil beispielsweise, der alle Grauwerte
  119. von 0 ... 255 aufweist, würde in der ersten Hälfte schwarz sein und dann
  120. in der Mitte schlagartig auf weiß umkippen.
  121.  
  122. Das eben beschriebene Verfahren ist also so nicht zu gebrauchen, bietet aber
  123. einen Ansatzpunkt, von dem aus Floyd und Steinberg weitergedacht haben:
  124.  
  125. Man behält das obige Verfahren bei, merkt sich aber bei dem Pixel, das man
  126. gerade in Arbeit hat, um wieviele Grauwerte man "daneben" liegt. Wenn also
  127. die Graustufe des aktuellen Pixels beispielsweise 60 ist und der
  128. Schwellenwert 128, dann schalten wir das Pixel nicht ein - wir tun so, als
  129. ob es den Grauwert 0 hätte - und merken uns, daß wir mit unserem 0-Wert um
  130. 60 Graustufen falsch liegen. Oder andersherum: Wenn die Graustufe 150
  131. beträgt und der Schwellenwert wiederum 128, dann schalten wir das Pixel ein
  132. - wir tun so, also ob es den Grauwert 255 hätte - und merken uns, daß
  133. wir mit unserem 255-Wert um -105 falsch liegen. Wir subtrahieren demnach
  134. immer den dargestellten Wert vom echten Wert: im ersten Falle 60 - 0, im
  135. zweiten Fall 150 - 255. Diesen "Fehler" verteilen wir dann auf das Pixel
  136. direkt rechts neben dem aktuellen Pixel, auf das Pixel direkt unterhalb des
  137. aktuellen Pixels und auf das Pixel rechts unterhalb des aktuellen Pixels.
  138. Die Verteilung des "Fehlers" erfolgt nach folgender Gewichtung:
  139.  
  140. Das Pixel rechts neben dem aktuellen Pixel erhält (Fehler * 0,375)
  141. auf seinen Grauwert draufaddiert, das Pixel direkt unterhalb des aktuellen
  142. Pixels ebenfalls (Fehler * 0,375) auf seinen Grauwert drauf und das
  143. Pixel rechts unten (Fehler * 0,25). Durch diese Fehlerverteilung
  144. entsteht ein schön chaotisches Muster, das im Auge bei angemessenem
  145. Betrachtungsabstand einen Eindruck von Grauwerten entstehen läßt. Ein sehr
  146. angenehmer Nebeneffekt ist, daß ein Bild seine echte Größe beibehält und
  147. nicht durch die Graustufensimulation größer dargestellt werden muß - wie
  148. dies z.B. bei manchen Rasterverfahren der Fall ist.
  149.  
  150. Ein kleiner Wermutstropfen soll nicht verschwiegen werden: wenn sich im Bild
  151. große Bereiche einer einheitlichen Graustufe befinden, dann kommt es vor,
  152. daß von den Grauwerten, die außerhalb eines solchen einheitlichen Bereiches
  153. liegen, Linien in den einheitlichen Bereich "hineinwachsen". Dies hat seine
  154. Ursache natürlich in der oben beschriebenen Fehler-Fortschreibung. Der Effekt
  155. ist jedoch - meiner subjektiven Ansicht nach - recht tolerabel. Der
  156. Floyd-Steinberg-Algorithmus ist nicht mehr als ein Hilfsmittel, um den Mangel
  157. an Graustufen in der Monitordarstellung so gut es geht auszugleichen. Wie
  158. schön digitalisierte Bilder mit 256 Graustufen tatsächlich aussehen können,
  159. das kann man eigentlich nur ermessen, wenn man die Gelegenheit hat, z.B.
  160. eine bearbeitete B&W256-Datei auf einem Rechner ausgeben zu lassen, der mit
  161. einem hochauflösenden Analogmonitor bestückt ist oder aber auf einem
  162. Laserbelichter.
  163.  
  164. Es gibt die Möglichkeit, die Fehlerverteilung in gewissen Grenzen zu modifi-
  165. zieren, um den eben erwähnten "Wermutstropfen" zu mindern. Man verteilt den
  166. Fehler statt in der Gewichtung 3/8 + 3/8 + 2/8 in einer anderen Gewichtung -
  167. Hauptsache, die Summe ergibt 8/8. Oder man bezieht weitere Umgebungspixel in
  168. die Fehlerverteilung ein.
  169.  
  170.  
  171.  
  172. Änderung des Bildkontrastes:
  173. ============================
  174.  
  175. Der hier zugrundliegende Algorithmus ähnelt sehr dem bei der Änderung der
  176. Bildhelligkeit verwendeten. Nur addiert man keinen Offset auf jedes Pixel,
  177. sondern multipliziert jeden Grauwert mit einem konstanten Faktor: z.B. mit
  178. dem Faktor 1.1, um eine 10 %ige Steigerung des Kontrasts oder beispiels-
  179. weise mit dem Faktor 0.9, um eine 10%ige Abschwächung des Kontrasts zu er-
  180. reichen.
  181.  
  182.  
  183.  
  184. Kantenverstärkung mittels LaPlace-Operator
  185. ==========================================
  186.  
  187. Oft existieren in Bildern mehr oder weniger ausgeprägte Kanten, die man auf
  188. mathematischem Wege finden und verstärken kann. Dies bewirkt im Bild
  189. den Eindruck gesteigerter Schärfe, allerdings in starker Abhängigkeit vom
  190. Bildinhalt. Man benutzt eine sogenannte "Koeffizientenmatrix", um Kanten
  191. in einem Bild zu finden. Diese Matrix wird quasi über das Bild geschoben und
  192. die Bildinhalte gemäß der Matrixelemente gewichtet. Bekannte Matrizen sind
  193. der LaPlace-Operator, der Roberts-Operator und der Sobel-Operator. Da
  194. ImageLab den LaPlace-Operator verwendet, wollen wir an dieser Stelle auch nur
  195. dieses Verfahren erörtern. Der LaPlace-Operator wird durch folgende
  196. Koeffizientenmatrix beschrieben:
  197.  
  198.  
  199.           0  -1   0                                 -1  -1  -1
  200.  
  201.          -1   4  -1           oft auch:             -1   8  -1
  202.  
  203.           0  -1   0                                 -1  -1  -1
  204.  
  205.  
  206.  
  207. In Worten: Nimm den Grauwert des Pixels, das sich direkt oberhalb des
  208. aktuellen Pixels befindet. Subtrahiere davon den Grauwert des Pixels, das
  209. sich direkt links neben dem aktuellen Pixel befindet. Subtrahiere davon den
  210. Grauwert des Pixels, das sich direkt rechts neben dem aktuellen Pixel befin-
  211. det. Subtrahiere davon den Grauwert des Pixels, das sich direkt unterhalb des
  212. aktuellen Pixels befindet. Multipliziere nun den Grauwert des aktuellen
  213. Pixels mit 4 und addiere das Ergebnis dieser Multiplikation auf die vorher
  214. berechnete Summe der vier umgebenden Pixel. Das Ergebnis ist der neue Grau-
  215. wert des aktuellen Pixels.
  216.  
  217. Soweit das "Kochrezept" der linken Matrix. ImageLab verwendet allerdings
  218. nicht den eben beschriebenen "klassischen" LaPlace-Operator oder die rechts
  219. daneben aufgeführte Variante, sondern eine erweiterte Version mit folgender
  220. Matrix:
  221.  
  222.                         -1 -1 -1 -1 -1
  223.                         -1 -1 -1 -1 -1
  224.                         -1 -1 24 -1 -1
  225.                         -1 -1 -1 -1 -1
  226.                         -1 -1 -1 -1 -1
  227.  
  228. Es ist nicht angebracht, den neuen Grauwert tatsächlich so wie er ist zu
  229. übernehmen. Vielmehr sollte dieser berechnete Grauwert nur zu einem geringen
  230. Prozentsatz zum Ursprungsgrauwert zugemischt werden; ImageLab bietet dazu
  231. die Möglichkeit an, einen beliebigen Faktor zwischen 1 und 100 % einzugeben.
  232.  
  233.  
  234.  
  235. Die Histogramm-Erzeugung
  236. ========================
  237.  
  238. Das Histogramm, das ImageLab zeichnet, ist die Darstellung der relativen
  239. Häufigkeit aller im Bild vorkommenden Grauwerte oder - als Alternative -
  240. die "absolute Häufigkeit". "Relativ" heißt hier: jeder Grauwert wird auf
  241. den am häufigsten vorkommenden Grauwert bezogen. Der am häufigsten
  242. vorkommende Grauwert erzeugt in der Darstellung einen senkrechten "Balken",
  243. der die gesamte Höhe des Histogramm-Rechtecks ausnutzt. Die "Balken" aller
  244. anderen Grauwerte sind dann entsprechend kürzer. "Absolute Häufigkeit" will
  245. heißen, daß die Obergrenze der Darstellung eindeutig festgelegt ist, und
  246. zwar genau bei der Häufigkeit 10240. Wenn ein Grauwert so oft vorkommt,
  247. berührt sein "Balken" die obere Kante des Rechtecks, wenn er weniger oft
  248. vorkommt, ist der "Balken" entsprechend kürzer. Natürlich passiert es auch,
  249. daß ein Grauwert häufiger als 10240 Mal vorkommt. Dann erreicht der
  250. "Balken" ebenfalls die Oberkante. Zusätzlich wird darüber eine kleine
  251. weiße Markierung eingeblendet, um den "Überlauf" zu markieren.
  252.  
  253. Wie läuft das Ganze ab?
  254.  
  255. Schon beim Laden der Datei sowie bei allen Manipulationen an den Daten wird
  256. für jeden einzelnen Grauwert von 0 ... 255 gezählt, wie oft er im Bild
  257. vorkommt. Es existieren demnach 256 Zähler, die die Häufigkeit jedes
  258. Grauwertes enthalten. Diese Daten werden bei der Histogramm-Darstellung
  259. "einfach" in eine Balkendarstellung umgerechnet und auf dem Bildschirm im
  260. Histogramm-Rechteck dargestellt. Die X-Achse repräsentiert hierbei die
  261. Graustufen 0 ... 255 (von links nach rechts), die Y-Achse die relative
  262. Häufigkeit (je häufiger der Grauwert vorkommt, um so höher ist der Balken)
  263. bzw. die Häufigkeit von 0 ... 10240.
  264.  
  265. Nun stellt man ein Histogramm nicht deshalb dar, um der Statistik zu frönen.
  266. Vielmehr dient das Histogramm dazu, erkennen zu können, ob Möglichkeiten
  267. bestehen, das Bild technisch noch etwas aufzupäppeln. Es ist nicht einfach,
  268. dies im Detail zu erklären, weil man gerade hierbei nur durch eigene
  269. Erfahrungen am besten lernt, aber ein paar Hinweise sind vielleicht doch
  270. angebracht:
  271.  
  272. Als erstes sollte man anhand des Histogramms prüfen, ob der verfügbare
  273. Grauwertbereich von 0 ... 255 tatsächlich vom Bild ausgeschöpft wird oder
  274. ob am oberen und/oder unteren Ende des Spektrums noch Lücken klaffen.
  275. Wenn der Spielraum nicht genutzt wurde, dann häufen sich die Grauwerte oft
  276. in einem relativ kleinen Bereich des Histogramms, während links und rechts
  277. davon ziemlich Ebbe herrscht. Ist links und/oder rechts tatsächlich gar
  278. kein Grauwert mehr da, hilft die "lineare Spreizung". Ansonsten sollten Sie
  279. sich mit den Transferfunktionen G bzw. N und der Histogramm-Ebnung vertraut
  280. machen, die es gestatten, geradezu abenteuerliche Änderungen an der Grauwert-
  281. verteilung vorzunehmen - zum Segen oder Fluch des in Arbeit befindlichen
  282. Bildes.
  283.  
  284.  
  285.  
  286. Die lineare Spreizung der Grauwertverteilung
  287. ============================================
  288.  
  289. Mit Hilfe des Histogramms ist es möglich festzustellen, welche Graustufen
  290. überhaupt im Bild vorkommen und wie häufig diese Graustufen vorhanden sind.
  291. Sollte nur ein Teil der zur Verfügung stehenden Graustufen existieren, so
  292. empfiehlt es sich, das Verfahren der "linearen Spreizung" anzuwenden, um
  293. diese Graustufen über den Gesamtbereich von 0 ... 255 zu verteilen. Die
  294. mathematische Formulierung lautet so:
  295.  
  296.  
  297. lookup(n) = a * n + b
  298.  
  299.  
  300. wobei "n" ein Zähler ist, der über alle möglichen Grauwerte von 0 ... 255
  301. läuft und die Koeffizienten "a" und "b" wie folgt berechnet werden:
  302.  
  303.  
  304. a = 255/(Imax - Imin)
  305.  
  306. b = -a * Imin
  307.  
  308.  
  309. Bei "Imin" und "Imax" handelt es sich um den niedrigsten und
  310. um den höchsten im Bild vorkommenden Grauton. Der Ausdruck "lookup(n)"
  311. muß noch erläutert werden:
  312.  
  313. In ImageLab existiert ein Datenfeld mit 256 Bytes Länge, das den Namen
  314. "Lookuptable" trägt. Diese Lookuptable wird folgendermaßen benutzt. Der
  315. Grauwert jedes einzelnen Pixels wird nicht als der "echte" Grauwert
  316. angesehen, sondern als Index auf die eben erwähnte "Lookuptable". Der
  317. Inhalt des mit dem Index adressierten Lookuptable-Elementes wird dann als
  318. tatsächlicher Grauwert benutzt. Zur Verdeutlichung ein Beispiel:
  319.  
  320. Nehmen wir an, das aktuelle Pixel hätte den Grauwert 10. Wir schauen nun im
  321. 10. Element der Lookuptable nach, welcher Grauwert dort steht und benutzen
  322. diesen Grauwert zur Darstellung.
  323.  
  324. Im Normalfall beinhaltet die Lookuptable die Grauwerte, die dem Index eines
  325. jeden Elementes entsprechen; das 0. Element enthält den Wert 0, das 1.
  326. Element den Wert 1 usw. bis zum 255. Element, das den Wert 255 enthält.
  327.  
  328. Mit Hilfe des oben angegeben Algorithmus wird die Lookuptable neu belegt und
  329. damit auf einfache Weise neue Grauwerte erzeugt. Die Lookuptable wird
  330. übrigens bei allen anderen Grauwert-Manipulationen im ImageLab auch
  331. verwendet.
  332.  
  333.  
  334.  
  335. Transferfunktion und Histogramm-Linearisierung
  336. ==============================================
  337.  
  338. Wie im obigen Abschnitt bereits angeklungen ist, liegt das Geheimnis der
  339. Grauwertmanipulation darin, in welcher Weise die Lookuptable belegt wird.
  340. Der Begriff "Transferfunktion" wird verständlich, wenn Sie sich einmal
  341. eine Grafik vorstellen, bei der in der X-Achse die 256 Lookuptable-Nummern
  342. aufgetragen werden und in der Y-Achse die Grauwerte (wie hinlänglich bekannt,
  343. von 0 ... 255), mit der jeder Lookuptable-Eintrag belegt ist. Wenn wir
  344. den Maßstab in X- und Y-Achse gleich groß wählen, so müßten wir eine
  345. eine Gerade mit 45 Grad Steigung erhalten, da dem Looktable-Eintrag 0 der
  346. Grauwert 0 zugeordnet ist, dem Lookuptable-Eintrag 1 der Grauwert 1 usw.
  347.  
  348. Bei Aufruf der ImageLab-Funktion "Grauwertoperationen..." können Sie diese
  349. Gerade sehen.
  350. Die Gerade ist die voreingestellte "Transferfunktion"; sie bewirkt nichts, da
  351. jeder Grauwert wieder durch den gleichen Grauwert ersetzt wird.
  352.  
  353. Ziel der "Histogramm-Linearisierung" ist es aber, zuweilen sehr massiv
  354. in die Grauwert-Verteilung einzugreifen. Der Weg dazu ist die Änderung der
  355. Transferfunktion. Eine einfache Manipulation ist die Invertierung: der
  356. Lookuptable-Eintrag Nummer 0 erhält den Grauwert 255, der Eintrag Nummer 1
  357. den Grauwert 254 usw. Die Transferfunktion ist demnach eine Gerade mit fal-
  358. lender Steigung, die Wirkung im Bild ist eine negative Darstellung desselben.
  359.  
  360. Ein weiteres Beispiel: Sehr oft kommt es vor, daß sich die Grauwerte in einem
  361. kleinen Bereich des Spektrums zusammenballen, anstatt, wie es wünschenswert
  362. wäre, sich über den gesamten Bereich zu verteilen. Mit Hilfe der
  363. Histogramm-Linearisierung ist es kein Problem, dies zu bewirken:
  364.  
  365. Wir belegen den Lookuptable-Eintrag Nummer 0 bis (so ungefähr) zum
  366. Lookuptable-Eintrag, bei dem die Grauwertzusammenballung beginnt, mit 0.
  367. Dies entspricht in der Transferfunktion einer Geraden, die parallel zur
  368. X-Achse und direkt oberhalb der X-Achse vom Ursprung nach rechts verläuft.
  369.  
  370. Ab dem Lookuptable-Eintrag, bei dem die Ballung der Grauwerte beginnt, bis
  371. (ungefähr) zu dem Eintrag, bei dem die Ballung endet, sollten nun alle
  372. Grauwerte bis 255 verteilt werden - grafisch ausgedrückt: eine Gerade,
  373. die mit positiver Steigung von 0 ... 255 ansteigt.
  374.  
  375. Den Rest der Lookuptable-Einträge (ab dem Ende der Grauwert-Ballung) belegen
  376. wir mit 255.
  377.  
  378. Was bewirkt dies alles? Da unterhalb und oberhalb der Ballung nichts
  379. erwähnenswertes geschieht, werden diese Bereiche mit den entsprechenden
  380. Grenzwerten - unten schwarz (= 0), oben weiß (= 255) - belegt. Der
  381. interessante Bereich, nämlich der, in dem sich alle vorhandenen Grauwerte
  382. befinden, wird weiterhin über das gesamte Spektrum gestreckt, sodaß der
  383. niedrigste Grauwert zu schwarz wird und der hellste Grauwert zu weiß. Im
  384. Prinzip also eine lineare Spreizung. Nun ist es jedoch genauso gut möglich,
  385. statt einer Geraden an dieser Stelle eine wie auch immer geformte "Kurve"
  386. zu zeichnen, beispielsweise eine Exponentialfunktion. Der Effekt einer
  387. solchen Kurve wäre beispielsweise eine schwächere Differenzierung der
  388. dunklen Töne und eine stärkere Differenzierung der hellen Töne. Der
  389. Experimentierfreude sind keine Grenzen gesetzt. Aber bedenken Sie bitte:
  390.  
  391. Da Ihnen mit Hilfe der ImageLab-Grauwertoperationen eine
  392. Möglichkeit angeboten wird, alle Grauwerte in beliebiger Form zu
  393. manipulieren, kann diese Manipulation natürlich auch eine
  394. Bildverschlechterung bewirken. Leider gibt es kaum Richtlinien, an die Sie
  395. sich am Anfang, wenn alles noch ungewohnt ist, halten könnten (später ist
  396. es sowieso eine Frage der Erfahrung). Vielleicht sollten Sie sich zu Beginn
  397. an die Faustregel halten, zunächst nur mit Transferfunktionen zu
  398. experimentieren, die eine positive Steigung haben, also von links nach
  399. rechts ansteigen.
  400.  
  401.  
  402.  
  403. Grauwert-Morphologie
  404. ====================
  405.  
  406. Unter diesem Sammelbegriff werden hier drei Funktionen zusammengefaßt:
  407.  
  408.  - Medianfilterung
  409.  - Dilatation
  410.  - Erosion
  411.  
  412. Allen dreien ist gemeinsam, daß sie den Grauwert eines Pixels aufgrund der
  413. Grauwerte der Pixel der unmittelbaren Nachbarschaft beeinflussen. Dazu werden
  414. zunächst der Grauwert des aktuellen Pixels und die seiner 8 Nachbarn
  415. ermittelt und in einen Zwischenpuffer geschrieben. Nun sortiert man diese
  416. neun Grauwerte im Zwischenpuffer in aufsteigender Folge, sodaß der erste
  417. Wert im Puffer der dunkelste (d.h. zahlenmäßig kleinste) und der letzte
  418. (neunte) Grauwert im Puffer der hellste (d.h. zahlenmäßig größte) Grauwert
  419. ist. Welchen neuen Grauwert das aktuelle Pixel nun zugewiesen bekommt, das
  420. hängt vom verwendeten Verfahren ab:
  421.  
  422. Bei der Medianfilterung wird der mittlere Wert (d.h. der fünfte Wert
  423. im Puffer) als neuer Grauwert eingesetzt. Die Wirkung im Bild wird
  424. manchmal als "Weichzeichnung" umschrieben, ein Ausdruck, den jeder
  425. Fotograf allerdings ablehnen würde. Es handelt sich vielmehr um eine
  426. Art "Glättung" der Kanten.
  427.  
  428. Bei der Dilatation wird der höchste Grauwert (der neunte im Puffer)
  429. zu einem bestimmten Prozentsatz als neuer Grauwert übernommen; bei
  430. ImageLab zu 50 % des höchsten Wertes. Die Wirkung im Bild ist
  431. die, daß sich die hellen Bildbereiche ausdehnen damit die dunklen
  432. Bereiche kleiner werden - die hellen Bereiche "wachsen" in die
  433. dunklen hinein.
  434.  
  435. Die Erosion entspricht einer umgekehrten Dilatation. Es wird der
  436. niedrigste Grauwert (d.h. der erste) aus dem Puffer zur Bildung des
  437. neuen Grauwertes herangezogen. Die Bildwirkung: die dunklen Bildteile
  438. "wachsen" in die hellen hinein.
  439.  
  440. Die Funktionen sind nicht reversibel, d.h. Sie dürfen nicht erwarten, daß
  441. nach einer Dilatation und nachfolgender Erosion wieder das Ursprungsbild
  442. entsteht.
  443.  
  444.  
  445.  
  446. Bitebenen-Anzeige
  447. =================
  448.  
  449. ImageLab verwaltet acht Bitplanes pro Pixel, mit anderen Worten: für jedes
  450. Pixel werden acht Bits verwendet, um den Grauwert zu beschreiben. Die Anzeige
  451. einzelner Bitplanes macht nichts anderes, als nur jeweils ein bestimmtes Bit
  452. aus diesen acht Bits zur Anzeige zu verwenden, z.B. nur das Bit 0. Wenn das
  453. Bit "1" ist, wird das Pixel weiß dargestellt, ansonsten schwarz. Diese
  454. Funktion zeigt den Informationsgehalt der einzelnen Planes an und gestattet
  455. damit Rückschlüsse auf die Redundanz des Bildes. So ist es beispielsweise
  456. möglich abzuschätzen, wieviele Bits pro Pixel eingespart werden könnten,
  457. ohne sichbar an Bildinformation zu verlieren.
  458.  
  459.  
  460.  
  461. Histogramm ebnen
  462. ================
  463.  
  464. Oft kann man eine erhebliche Steigerung der (technischen) Bildqualität er-
  465. reichen, wenn man die Grauwertverteilung so ändert, daß alle Grauwerte in
  466. etwa gleich häufig im Bild vertreten sind. Dies kann man annähernd erreichen,
  467. wenn man die relative Summenhäufigkeit der Grauwerte (-> Histogramm) als
  468. Skalierungsfunktion für die Grauwertumrechnung verwendet.
  469.  
  470.  
  471.  
  472. Literaturhinweise
  473. =================
  474.  
  475. Dieser Text kann nur eine Einführung sein. Im Interesse der Verständlichkeit
  476. wurde fast komplett auf Mathematik verzichtet, obwohl dadurch (insbesondere
  477. bei der Beschreibung der Transferfunktion und der Kantenverstärkung) die
  478. Exaktheit der Beschreibung leidet. Sollte ImageLab Ihr Interesse an der
  479. Bildverarbeitung geweckt haben und Sie nun nach weiterführender Literatur
  480. suchen, die dort weitermacht, wo diese Beschreibung (leider) enden muß,
  481. dann hilft Ihnen die folgende kleine Liste vielleicht weiter.
  482.  
  483. Die Zeitschriften-Artikel, die die Liste anführen, haben den Vorteil
  484. gegenüber den Büchern, daß sie zum einen in einer leicht zu verarbeitenden
  485. Sprache verfaßt sind und zudem Programmierbeispiele beinhalten. Die Bücher
  486. wiederum sind etwas schwerer verdaulich, dafür aber exakt in ihrer
  487. Darstellung der Zusammenhänge.
  488.  
  489.  
  490. Dr. Klaus Dieter Brinkmann und Dr. Hans-Werner Eisermann,
  491. "Aufbereitung von Bildern", mc 5/1988 und 6/1988
  492.  
  493. Thomas Bieber, "Pixel Domino", c't 3/1988
  494.  
  495. Michael Schaale, "Farbenlotto", c't 12/1989
  496.  
  497. Michael Schaale, "Scharf gerechnet", c't 1/1990
  498.  
  499. P. Haberäcker, "Digitale Bildverarbeitung", München 1987
  500.  
  501. William M. Newman und Robert F. Sproull, "Principles of
  502. Interactive Computer Graphics", Auckland 1983
  503.  
  504.  
  505.  
  506.  
  507.                                   Autor:
  508.  
  509.                               Rainer  Frädrich
  510.                               Mörler Straße 36
  511.                               D-6360 Friedberg
  512.                               Btx 06 0319 2816
  513.  
  514.                                 Co-Autor:
  515.  
  516.                                Mauselin Soft
  517.                                Oliver Hansen
  518.                                Maxstrasse 18
  519.                                 5100 Aachen
  520.                 email: hansen@pool.informatik.rwth-aachen.de
  521.  
  522.  
  523.                            Update-Informationen:
  524.  
  525.                             siehe 2_MANUAL.DOC
  526.  
  527.  
  528.